<?php

require_once 'MainPageWidget.php';
class FilesWidget extends MainPageWidget
{
	public $title = 'Файлы';
	public $files_count = 3;
	public $template_var_name = 'files';
	public $file_class_name = "file";
	public $tdi_types = array("file");

	public function SetFilesOid( $oid ) {
		// устанавливает идентификатор раздела файлохранилища
		$this->tdi_oid = $oid;
	}

	public function Render() {
		// запросим несколько последних картинок
		$content = array();
		$_tdi_w = array();
		foreach($this->getParam("tdis", array()) as $n=>$tdi_oid) {
			if (is_numeric($tdi_oid)) {
				$_tdi_where = $this->getParam("file_class_name", "file").".tdi_oid==".$tdi_oid;
				$_tdi_w[] = $_tdi_where;
			}
		}

		$community_oid = $this->getParam('community_oid', $this->acl_assistant->acl_data['comity_oid']);
		$files_count = intval($this->getParam("files_count", 9));

		$ql = "objects where "
			. ($_tdi_w ? implode(" OR ", $_tdi_w)." AND " : '')
			. " file.community_oid = :0 "
			. " order by ctime desc "
			. ($files_count > 0 ? "limit 0, $files_count" : '')
			;

		$results = $this->store->find( $ql, array($community_oid) );

		if($results) {
			$items = array();
			while ($object = $results->next()) {

				// если это файл то извлечем метаинформацию о файле из ссылки на объект
				$query['filestorage']['oid']['=='] = $object->data['file_oid'];
				$find_result = $this->store->find( $query );
				$file = $find_result->next();
				$pi = pathinfo( $file->data['real_fname'] );

				$item = array();
				$item['file'] = $object->data;
				$item['file_meta'] = $file->data;
				$item['file_meta']['extension'] = $pi['extension'];
				$item['file_url'] = $this->hrefFile($object->data);

				unset($pi);

				$items[] = $item;
				unset($item);

			}
			$content['items'] = $items;
		}

		$content['output_handler'] = "filestorage";
		$content['title'] = $this->getParam("title", "Файлы");


		$this->content = $content;

		return $this;
	}

	public function settingsForm()
	{
		$tdis_list = $this->getTdis();
		$config['form'] = array(
			'title' => 'Список файлов',
			'fields' => array(

				'title' => array(
					'type' => 'text',
					'title' => 'Название',
					'default' => $this->title,
					'description' => 'Название меню',
				),

				'files_count' => array(
					'type' => 'text',
					'title' => 'Количество файлов',
					'default' => $this->files_count,
					//'description' => 'Название меню',
				),

				'tdis' => array(
					'type' => 'checklist',
					'title' => 'Список разделов',
					'description' => 'Разделы сообщества',
					'fields' => $tdis_list,
				),
			),
		);
		return $config['form'];
	}
	
	public function hrefFile ($file)
	{
		$this->ctx->rh->UseClass('RL_URLGenerator');
		$router = $this->ctx->rh->router;
		$params = $this->parent->params;
		$params['file_oid'] = $file['file_oid'];
		$ug = new RL_URLGenerator($router->getRule('filestorage'));
		$ug->setRouter($router);
		$ug->setParams($params);
		return $ug->generateUrl();
	} // end of method hrefFile


}

